/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.bean.BeanCurso;
import model.bean.BeanUsuario;
import model.daobase.DBase;

/**
 *
 * @author Renato
 */
public class DaoSuscripcion extends DBase{
    
    public void insert(ArrayList<BeanCurso> lista, BeanUsuario usuario) {

        this.init_mysql();
        PreparedStatement pstmt = null;

        try {

            String query = "INSERT into suscripcion(usuario_idusuario,curso_idcurso) "
                    + "values(?,?)";
            pstmt = conn.prepareStatement(query);

            for (BeanCurso beancurso : lista) {
                pstmt.setInt(1, Integer.valueOf(beancurso.getIdcurso()));
                pstmt.setInt(2, usuario.getIdusuario());
                pstmt.executeUpdate();
            }

            pstmt.close();
            conn.close();

        } catch (SQLException e1) {
            e1.getMessage();
        }
               

    }
    
    public void delete(int idcurso, BeanUsuario usuario) {

        this.init_mysql();
        PreparedStatement pstmt = null;

        try {

            String query = "DELETE FROM suscripcion "
                    + "WHERE curso_idcurso = "+idcurso+" AND usuario_idusuario = "+usuario.getIdusuario();
            pstmt = conn.prepareStatement(query);
            pstmt.executeUpdate();
            pstmt.close();
            conn.close();

        } catch (SQLException e1) {
            e1.getMessage();
        }
    }
    
    public void add(int idcurso, BeanUsuario usuario) {

        this.init_mysql();
        PreparedStatement pstmt = null;

        try {

            String query = "INSERT INTO suscripcion VALUES("+usuario.getIdusuario()+","+idcurso+")";
            pstmt = conn.prepareStatement(query);
            pstmt.executeUpdate();
            pstmt.close();
            conn.close();

        } catch (SQLException e1) {
            e1.getMessage();
        }
    }
    
    public ArrayList<BeanCurso> listusuarioxcurso(BeanUsuario beanusuario) {

        ArrayList<BeanCurso> list = new ArrayList<BeanCurso>();
        this.init_mysql();
        PreparedStatement pstmt = null;
        ResultSet res = null;
        BeanCurso beanCurso = null;

        try {

            String query = "SELECT s.curso_idcurso,c.nombre,c.codigo,c.idciclo FROM suscripcion s"
                    +" INNER JOIN curso c ON s.curso_idcurso=c.idcurso"
                    +" WHERE s.usuario_idusuario="+beanusuario.getIdusuario();
            pstmt = conn.prepareStatement(query);
            res = pstmt.executeQuery();
            while (res.next()) {
                
                beanCurso = new BeanCurso();
                beanCurso.setIdcurso(res.getInt(1));
                beanCurso.setNombre(res.getString(2));
                beanCurso.setCodigo(res.getString(3));
                beanCurso.setIdciclo(res.getString(4));
                list.add(beanCurso);

            }
            
            res.close();
            pstmt.close();
            conn.close();

        } catch (SQLException e1) {
            e1.getMessage();
        }
        
        return list;
    }
    
    public ArrayList<BeanCurso> listcursos(BeanUsuario beanusuario) {

        ArrayList<BeanCurso> list = new ArrayList<BeanCurso>();
        this.init_mysql();
        PreparedStatement pstmt = null;
        ResultSet res = null;
        BeanCurso beanCurso = null;

        try {

            String query = "SELECT c.idcurso,c.codigo,c.nombre,c.idciclo"+
                    " FROM curso c WHERE c.idcurso"+
                    " NOT IN ( SELECT curso_idcurso FROM suscripcion WHERE usuario_idusuario = "+beanusuario.getIdusuario()+")";
            pstmt = conn.prepareStatement(query);
            res = pstmt.executeQuery();
            while (res.next()) {
                
                beanCurso = new BeanCurso();
                beanCurso.setIdcurso(res.getInt(1));
                beanCurso.setNombre(res.getString(2));
                beanCurso.setCodigo(res.getString(3));
                beanCurso.setIdciclo(res.getString(4));
                list.add(beanCurso);

            }
            
            res.close();
            pstmt.close();
            conn.close();

        } catch (SQLException e1) {
            e1.getMessage();
        }
        
        return list;
    }
    
    
}
